package DataStreamApi.Env;

import org.apache.flink.configuration.Configuration;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;


/**
 *
 * 我们要获取的执行环境，是StreamExecutionEnvironment类的对象，这是所有Flink程序的基础。在代码中创建执行环境的方式，就是调用这个类的静态方法，具体有以下三种。
 * 1）getExecutionEnvironment
 * 最简单的方式，就是直接调用getExecutionEnvironment方法。它会根据当前运行的上下文直接得到正确的结果：如果程序是独立运行的，就返回一个本地执行环境；如果是创建了jar包，然后从命令行调用它并提交到集群执行，那么就返回集群的执行环境。也就是说，这个方法会根据当前运行的方式，自行决定该返回什么样的运行环境。
 * StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
 * 这种方式，用起来简单高效，是最常用的一种创建执行环境的方式。
 * 2）createLocalEnvironment
 * 这个方法返回一个本地执行环境。可以在调用时传入一个参数，指定默认的并行度；如果不传入，则默认并行度就是本地的CPU核心数。
 * StreamExecutionEnvironment localEnv = StreamExecutionEnvironment.createLocalEnvironment();
 * 3）createRemoteEnvironment
 * 这个方法返回集群执行环境。需要在调用时指定JobManager的主机名和端口号，并指定要在集群中运行的Jar包。
 * StreamExecutionEnvironment remoteEnv = StreamExecutionEnvironment
 *   		.createRemoteEnvironment(
 *     		"host",                   // JobManager主机名
 *     		1234,                     // JobManager进程端口号
 *    			"path/to/jarFile.jar"  // 提交给JobManager的JAR包
 * 		);
 * 在获取到程序执行环境后，我们还可以对执行环境进行灵活的设置。比如可以全局设置程序的并行度、禁用算子链，还可以定义程序的时间语义、配置容错机制。
 */



public class Flink01_ENV01 {

    public static void main(String[] args) {
        /**
         * 创建本地集群
         */
        StreamExecutionEnvironment localEnvironmentWithWebUI = StreamExecutionEnvironment.createLocalEnvironmentWithWebUI(new Configuration());


        /**
         *
         */
        Configuration configuration2 = new Configuration();

        StreamExecutionEnvironment.getExecutionEnvironment();
    }
}
